//package com.itheima.redis_queue;
//
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.Set;
//import java.util.concurrent.TimeUnit;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.ZSetOperations;
//import org.springframework.stereotype.Component;
//import org.springframework.util.ObjectUtils;
//
//import com.itheima.utils.RedisUtils;
//
///**
// * @author ：yuan_he_song
// */
//@Component
//public class ConsumerListener  {
//
//    @Autowired
//    private RedisUtils redisUtils;
//
//    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
//
//    public void onMessage(Object key) {
//        while (true) {
//            Set<ZSetOperations.TypedTuple> set = redisUtils.rangeWithScore(key);
//            if (ObjectUtils.isEmpty(set)) {
//                try {
//                    TimeUnit.MILLISECONDS.sleep(5000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                continue;
//            }
//            set.forEach( tuple -> {
//                double score = tuple.getScore();
//                long now = System.currentTimeMillis();
//                if (now >= score) {
//                    // 取出延迟的消息
//                    String value = (String)tuple.getValue();
//                    // 业务处理
//                    System.err.println("当前时间 :" + sdf.format(new Date()) + " ,消息内容：" + value);
//                    // 删除已处理的key
//                    redisUtils.remove(key, value);
//                }
//            });
//        }
//    }
//}
